//======================================================================================
//  Apache License, Version 2.0
//  Notes:Use this command to anonymously check out the latest project source code:
//  Non-members may check out a read-only working copy anonymously over HTTP.
//  SVN checkout http://YHHLineCommandWsp.googlecode.com/svn/trunk/ 
//
//  Author:		Kevin Yang
//  Email:		Bigearrabbit@qq.com
//
//  DATE:		2013-4-6
//
//  File Name:	
//
//  Notes:
//
//======================================================================================
#ifndef YHHILineCommandChild_H
#define YHHILineCommandChild_H

// Local Framework
#include "YHHLineCommandItf.h"
#include "YHHLineCommandChildParam.h"

// System Framework
#include "CATBaseUnknown.h"
#include "CATUnicodeString.h"

class CATISpecObject;

extern ExportedByYHHLineCommandItf IID IID_YHHILineCommandChild ;

/**
* Interface to manage Line Commands.
*  
*  Role : use this interface to get / set the input of a Line Command. 
*         A Line Command is the intersection of two extruded surfaces.
*         Each of the two surfaces is buildt using a curve (profile) and a direction (of extrusion).
*         Consequently, a Line Command has two input curves and two input directions.
*/

class ExportedByYHHLineCommandItf YHHILineCommandChild: public CATBaseUnknown
{
	CATDeclareInterface;

public:

	/// <summary>GetParams</summary>
	/// <return>HRESULT</return>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-4</date>
	virtual HRESULT GetParams(YHHLineCommandChildParam & oValue)const = 0; 

	/// <summary>SetParams</summary>
	/// <return>HRESULT</return>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-4</date>
	virtual HRESULT SetParams(const YHHLineCommandChildParam & iValue) = 0;

	//DO NOT EDIT IN THE CONTROL CODE OF "KEVIN CAA WIZARD SECTION"
	//START KEVIN CAA WIZARD SECTION YHHLineCommandChild INTERFACES HEAD GET
public://Get

	/// <summary>ErrMsg</summary>
	/// <return>CATUnicodeString</return>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-5</date>
	/// <remarks></remarks>
	virtual CATUnicodeString GetErrMsg() const = 0;//0

	/// <summary>Start Point</summary>
	/// <return>CATISpecObject_var</return>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-2</date>
	/// <remarks></remarks>
	virtual CATISpecObject_var GetStartPoint() const = 0;//1

	/// <summary>Line Direction</summary>
	/// <return>CATISpecObject_var</return>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-2</date>
	/// <remarks></remarks>
	virtual CATISpecObject_var GetLineDirection() const = 0;//2

	/// <summary>Length Sign</summary>
	/// <return>int</return>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-2</date>
	/// <remarks></remarks>
	virtual int GetLengthSign() const = 0;//3

	/// <summary>Length Start</summary>
	/// <return>double</return>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-2</date>
	/// <remarks></remarks>
	virtual double GetLengthStart() const = 0;//4

	/// <summary>Length End</summary>
	/// <return>double</return>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-2</date>
	/// <remarks></remarks>
	virtual double GetLengthEnd() const = 0;//5
	//END KEVIN CAA WIZARD SECTION YHHLineCommandChild INTERFACES HEAD GET

	//DO NOT EDIT IN THE CONTROL CODE OF "KEVIN CAA WIZARD SECTION"
	//START KEVIN CAA WIZARD SECTION YHHLineCommandChild INTERFACES HEAD SET
public://Set

	/// <summary>ErrMsg</summary>
	/// <param name="iValue">CATUnicodeString</param>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-5</date>
	/// <remarks></remarks>
	virtual HRESULT SetErrMsg(const CATUnicodeString & iValue) = 0;//0

	/// <summary>Start Point</summary>
	/// <param name="iValue">CATISpecObject_var</param>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-2</date>
	/// <remarks></remarks>
	virtual HRESULT SetStartPoint(const CATISpecObject_var & iValue) = 0;//1

	/// <summary>Line Direction</summary>
	/// <param name="iValue">CATISpecObject_var</param>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-2</date>
	/// <remarks></remarks>
	virtual HRESULT SetLineDirection(const CATISpecObject_var & iValue) = 0;//2

	/// <summary>Length Sign</summary>
	/// <param name="iValue">int</param>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-2</date>
	/// <remarks></remarks>
	virtual HRESULT SetLengthSign(const int & iValue) = 0;//3

	/// <summary>Length Start</summary>
	/// <param name="iValue">double</param>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-2</date>
	/// <remarks></remarks>
	virtual HRESULT SetLengthStart(const double & iValue) = 0;//4

	/// <summary>Length End</summary>
	/// <param name="iValue">double</param>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-2</date>
	/// <remarks></remarks>
	virtual HRESULT SetLengthEnd(const double & iValue) = 0;//5
	//END KEVIN CAA WIZARD SECTION YHHLineCommandChild INTERFACES HEAD SET

};

/// <summary>Macro for Handlers </summary>
CATDeclareHandler( YHHILineCommandChild, CATBaseUnknown );
#endif
